package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentDaoFactory;

/*
        业务员类:
            1.这里的所有方法[功能]都是给客服使用的
            2.如果某些业务涉及到要对数据仓库的数据进行访问的话,那么需要在业务员类中操作库管对象
            3.该累的核心作用是用于处理业务逻辑,例如:判断录入的id是否存在
* */
public class StudentService {
    private BaseStudentDao studentDao = StudentDaoFactory.getStudentDao();
    //private OtherStudentDao studentDao = new OtherStudentDao();
    //添加学生方法
    public boolean addStudent(Student stu) {
        //判断id是否存在,暂不考虑
        //StudentDao studentDao = new StudentDao();

        return studentDao.addStudent(stu);
    }

    public boolean isExists(String id) {
        //1.调用库管对象将所有数据拿过来放到数组中
        //StudentDao studentDao = new StudentDao();
        Student[] stuArray = studentDao.findAllStudent();
        //定义一个标记,boolean=false假设输入的id不存在\
        boolean flag = false;
        //遍历数组,并进行判断
        for (int i = 0; i < stuArray.length; i++) {
            //创建一个学生对象接收数组当中的对象数据
            Student stu = stuArray[i];
            //进行判断id是否存在
            if (stu != null && stu.getId().equals(id)) {
                flag = true;
                break;
            }
        }
        //返回flag值
        return flag;
    }

    public Student[] findAllStudent() {
        //调用StudentDao的findAllStudent()返回数组
        Student[] stu = studentDao.findAllStudent();
        //定义一个标记boolean flag = false;表示里面没有任何数据全是null
        boolean flag = false;
        //遍历数组,只要有一个元素不为null就退出循环,给flag赋值为true
        for (int i = 0; i < stu.length; i++) {
            Student stus = stu[i];
            //如果学生对象stus不为空,直接标记改为true
            if (stus != null) {
                flag = true;
                break;
            }
        }
        if (flag) {
            //有学生对象,返回数组
            return stu;
        } else {
            //全是null,返回null
            return null;
        }
    }

    public void deleteStudent(String delId) {
        studentDao.deleteStudent(delId);
    }

    public void updateStudent(String updateId, Student stu) {
        studentDao.updateStudent(updateId, stu);
    }
}
